package com.ruyuan2020.im.x;

import java.util.PriorityQueue;

public class findKthLargest {
    //思路 1 ：把 `len` 个元素都放入一个最小堆中，然后再 pop() 出 len - k 个元素，此时最小堆只剩下 `k` 个元素，堆顶元素就是数组中的第 `k` 个最大元素。
        public int findKthLargest(int[] nums, int k) {
            int len = nums.length;
            // 使用一个含有 len 个元素的最小堆，默认是最小堆，可以不写 lambda 表达式：(a, b) -> a - b
            PriorityQueue<Integer> minHeap = new PriorityQueue<>(len, (a, b) -> a - b);
            for (int i = 0; i < len; i++) {
                minHeap.add(nums[i]);
            }
            for (int i = 0; i < len - k; i++) {
                minHeap.poll();
            }
            return minHeap.peek();
    }

}
